1 module hip.util.windows;
2 
3 
4 version(Windows):
5 import core.stdc.stdarg;
6 
7 
8 @nogc nothrow extern(Windows)
9 {
10     void* GetModuleHandleA(const(char)* str);
11     void* GetModuleHandleW(const(wchar)* str);
12     void* GetProcAddress(void* mod, const(char)* func);
13     void* LoadLibraryA(const char* fileName);
14     BOOL  FreeLibrary(void* lib);
15     uint GetLastError();
16 
17     DWORD FormatMessageW(DWORD, PCVOID, DWORD, DWORD, LPWSTR, DWORD, va_list*);
18 
19     int SetEndOfFile(void* handle);
20 
21     alias GetModuleHandle = GetModuleHandleW;
22     alias FormatMessage = FormatMessageW;
23 
24 
25 
26     HLOCAL LocalAlloc(UINT, SIZE_T);
27     HLOCAL LocalDiscard(HLOCAL);
28     HLOCAL LocalFree(HLOCAL);
29     HLOCAL LocalHandle(LPCVOID);
30 }
31 
32 enum DWORD
33     FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x0100,
34     FORMAT_MESSAGE_IGNORE_INSERTS  = 0x0200,
35     FORMAT_MESSAGE_FROM_STRING     = 0x0400,
36     FORMAT_MESSAGE_FROM_HMODULE    = 0x0800,
37     FORMAT_MESSAGE_FROM_SYSTEM     = 0x1000,
38     FORMAT_MESSAGE_ARGUMENT_ARRAY  = 0x2000;
39 
40 enum DWORD FORMAT_MESSAGE_MAX_WIDTH_MASK = 255;
41 
42 alias ubyte        BYTE;
43 alias ubyte*       PBYTE, LPBYTE;
44 alias ushort       USHORT, WORD, ATOM;
45 alias ushort*      PUSHORT, PWORD, LPWORD;
46 alias uint         ULONG, DWORD, UINT, COLORREF;
47 alias uint*        PULONG, PDWORD, LPDWORD, PUINT, LPUINT, LPCOLORREF;
48 alias int          WINBOOL, BOOL, INT, LONG, HFILE, HRESULT;
49 alias int*         PWINBOOL, LPWINBOOL, PBOOL, LPBOOL, PINT, LPINT, LPLONG;
50 alias float        FLOAT;
51 alias float*       PFLOAT;
52 alias const(void)* PCVOID, LPCVOID;
53 
54 alias void*  PVOID, LPVOID;
55 alias char*  PSZ, PCHAR, PCCHAR, LPCH, PCH, LPSTR, PSTR;
56 alias wchar* PWCHAR, LPWCH, PWCH, LPWSTR, PWSTR;
57 alias bool*  PBOOLEAN;
58 alias ubyte* PUCHAR;
59 alias short* PSHORT;
60 alias int*   PLONG;
61 alias uint*  PLCID, PACCESS_MASK;
62 alias long*  PLONGLONG;
63 alias ulong* PDWORDLONG, PULONGLONG;
64 
65 
66 
67 alias HMODULE = void*;
68 alias HLOCAL = void*;
69 alias SIZE_T = ulong;